package com.ktjy.order.feign.fallback;

import com.ktjy.base.Q;
import com.ktjy.base.R;
import com.ktjy.order.feign.FeignOrderService;
import com.ktjy.pojo.order.Order;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;

import java.util.List;

/**
 * FeignOrderServiceFallback
 *
 * @author LILIBO
 * @since 2025-06-04
 */
@Slf4j
@Component
public class FeignOrderServiceFallback implements FeignOrderService {

    /**
     * 新增订单记录
     *
     * @param order 订单
     * @return R 成功返回true
     */
    @Override
    public R add(Order order) {
        log.info("[服务降级] order={}", order);
        return R.failure(2, "Fallback");
    }

    /**
     * 保存或更新订单记录
     *
     * @param order 订单（带主键ID表示更新，否则为新增）
     * @return R 成功返回保存后的完整对象
     */
    @Override
    public R save(Order order) {
        log.info("[服务降级] order={}", order);
        return R.failure(2, "Fallback");
    }

    /**
     * 修改订单记录
     *
     * @param order 订单
     * @return R 成功返回true
     */
    @Override
    public R update(Order order) {
        log.info("[服务降级] order={}", order);
        return R.failure(2, "Fallback");
    }

    /**
     * 通过id删除一条订单记录
     *
     * @param id
     * @return R 成功返回true
     */
    @Override
    public R deleteById(Long id) {
        log.info("[服务降级] order={}", id);
        return R.failure(2, "Fallback");
    }

    /**
     * 通过多个id批量删除订单记录
     *
     * @param ids
     * @return R
     */
    @Override
    public R removeByIds(List<Long> ids) {
        log.info("[服务降级] order={}", ids);
        return R.failure(2, "Fallback");
    }

    /**
     * 通过id查询单条订单记录
     *
     * @param id
     * @return R
     */
    @Override
    public R getById(Long id) {
        log.info("[服务降级] order={}", id);
        return R.failure(2, "Fallback");
    }

    /**
     * 查询订单列表
     *
     * @param order 订单
     * @return R
     */
    @Override
    public R list(Order order) {
        log.info("[服务降级] order={}", order);
        return R.failure(2, "Fallback");
    }

    /**
     * 分页查询订单
     *
     * @param pageNo 当前页
     * @param pageSize 每页条数
     * @param order 订单
     * @return
     */
    @Override
    public R page(Long pageNo, Long pageSize, Order order) {
        log.info("[服务降级] pageNo={}, pageSize={}, order={}", pageNo, pageSize, order);
        return R.failure(2, "Fallback");
    }

    /**
     * 分页查询订单列表
     *
     * @param pageNo 当前页
     * @param pageSize 每页条数
     * @param param 通用查询参数
     * @return 返回分页数据列表，其中count为数据总量
     */
    @Override
    public R queryPage(Long pageNo, Long pageSize, Q param) {
        log.info("[服务降级] pageNo={}, pageSize={}, param={}", pageNo, pageSize, param);
        return R.failure(2, "Fallback");
    }

    /**
     * 创建订单
     *
     * @param productId 购买的商品ID
     * @param uid 购买用户ID
     * @return R 订单对象
     */
    @Override
    public R create(Long productId, Long uid) {
        log.info("[服务降级] productId={}, uid={}", productId, uid);
        return R.failure(2, "Fallback");
    }

}
